package com.example.popmp3.dao;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.example.popmp3.model.Tb_singlelist;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2016/3/7.
 */

    /**
     * Created by Administrator on 2016/3/7.
     * 歌曲清单
     */
    public class SingleListDAO {
        private DBOpenHelper helper;
        private SQLiteDatabase db;
        public SingleListDAO(Context context){
            helper=new DBOpenHelper(context);
        }
        /**
         * 添加歌曲
         * @param tb_singlelist
         */
        public void add(Tb_singlelist tb_singlelist) {
            db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
            // 执行添加收入信息操作
            db.execSQL(
                    "insert into tb_singlelist (_id,musicid,loveid) values (?,?,?)",
                    new Object[]{tb_singlelist.getid(), tb_singlelist.getMusicid(),
                            tb_singlelist.getLoveid()});
        }

        /**
         * 更新歌曲信息
         *
         * @param tb_singlelist
         */
        public void update(Tb_singlelist tb_singlelist) {
            db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
            // 执行修改收入信息操作
            db.execSQL(
                    "update tb_singlelist set musicid = ?,loveid = ? where _id = ?",
                    new Object[] { tb_singlelist.getMusicid(), tb_singlelist.getLoveid(),
                            tb_singlelist.getid()});
        }

        /**
         * 查找歌曲信息
         *
         * @param id
         * @return
         */
        public Tb_singlelist find(int id) {
            db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
            Cursor cursor = db.rawQuery(
                    "select _id,musicid,loveid from tb_singlelist where _id = ?",
                    new String[]{String.valueOf(id)});// 根据编号查找信息，并存储到Cursor类中
            if (cursor.moveToNext())
            {
                // 将遍历到的收入信息存储到Tb_inaccount类中
                return new Tb_singlelist(
                        cursor.getInt(cursor.getColumnIndex("_id")),
                        cursor.getInt(cursor.getColumnIndex("musicid")),
                        cursor.getInt(cursor.getColumnIndex("loveid")));
            }
            return null;// 如果没有信息，则返回null
        }

        /**
         * 刪除收入信息
         *
         * @param ids
         */
        public void detele(Integer... ids) {
            if (ids.length > 0)// 判断是否存在要删除的id
            {
                StringBuffer sb = new StringBuffer();// 创建StringBuffer对象
                for (int i = 0; i < ids.length; i++)// 遍历要删除的id集合
                {
                    sb.append('?').append(',');// 将删除条件添加到StringBuffer对象中
                }
                sb.deleteCharAt(sb.length() - 1);// 去掉最后一个“,“字符
                db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
                // 执行删除收入信息操作
                db.execSQL("delete from tb_singlelist where _id in (" + sb + ")",
                        (Object[]) ids);
            }
        }

        /**
         * 获取歌曲信息
         *
         * @param start
         *            起始位置
         * @param count
         *            每页显示数量
         * @return
         */
        public List<Tb_singlelist> getScrollData(int start, int count) {
            List<Tb_singlelist> tb_singlelist = new ArrayList<Tb_singlelist>();// 创建集合对象
            db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
            // 获取所有收入信息
            Cursor cursor = db.rawQuery("select * from tb_singlelist limit ?,?",
                    new String[] { String.valueOf(start), String.valueOf(count) });
            while (cursor.moveToNext())// 遍历所有的收入信息
            {
                // 将遍历到的收入信息添加到集合中
                tb_singlelist.add(new Tb_singlelist(
                        cursor.getInt(cursor.getColumnIndex("_id")),
                        cursor.getInt(cursor.getColumnIndex("musicid")),
                        cursor.getInt(cursor.getColumnIndex("loveid"))));
            }
            return tb_singlelist;// 返回集合
        }

        /**
         * 获取总记录数
         *
         * @return
         */
        public long getCount() {
            db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
            Cursor cursor = db.rawQuery("select count(_id) from tb_singlelist", null);// 获取收入信息的记录数
            if (cursor.moveToNext())// 判断Cursor中是否有数据
            {
                return cursor.getLong(0);// 返回总记录数
            }
            return 0;// 如果没有数据，则返回0
        }

        /**
         * 获取收入最大编号
         *
         * @return
         */
        public int getMaxId() {
            db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
            Cursor cursor = db.rawQuery("select max(_id) from tb_singlelist", null);// 获取收入信息表中的最大编号
            while (cursor.moveToLast()) {// 访问Cursor中的最后一条数据
                return cursor.getInt(0);// 获取访问到的数据，即最大编号
            }
            return 0;// 如果没有数据，则返回0
        }
    }

